from selenium.webdriver.common.by import By

from base.admin.base_page import BasePage


# 对象库层
class HomePage(BasePage):
    # 对象库层:
    # 1.维护、管理元素定位方式 --->通过实例属性来进行管理
    # 2.定位界面上所有需要使用的元素对象  --->通过实例方法来进行定位
    def __init__(self):
        super().__init__()
        # 商城页
        self.shop_link = (By.LINK_TEXT, "商城")
        # 商品分类TAB
        self.cate_tab = (By.CSS_SELECTOR, "[data-param*='categoryList|G']")
        self.goods_list = (By.XPATH, '//*[text()="商品列表"]')

    # 找到商城页超链接
    def find_shop_link(self):
        """方法/函数在调用之后会执行方法/函数其内部代码，如果需要获取其操作之后的结果，就一定要加上return"""
        return self.fd_em(self.shop_link)

    # 找到商品分类TAB
    def find_cate_tab(self):
        return self.fd_em(self.cate_tab)

    # 找到商品分类TAB
    def find_goods_list(self):
        return self.fd_em(self.goods_list)


# 操作层
# 执行步骤
class HomeHandle:
    def __init__(self):
        self.home_page = HomePage()

    # 点击商城
    def click_shop_link(self):
        self.home_page.find_shop_link().click()

    # 点击顶部商城
    def click_cate_tab(self):
        self.home_page.find_cate_tab().click()

    # 点击商城列表
    def click_goods_list(self):
        self.home_page.find_goods_list().click()


# 业务层，调用操作层的方法
class HomeProxy:
    def __init__(self):
        self.home_handle = HomeHandle()

    # 跳转到商城分类页面
    def to_cate_page(self):
        # 点击顶部商城
        self.home_handle.click_shop_link()
        # 点击分类管理
        self.home_handle.click_cate_tab()

    # 跳转到商城分类页面
    def to_goods_list(self):
        # 点击顶部商城
        self.home_handle.click_shop_link()
        # 点击分类管理
        self.home_handle.click_goods_list()
